package controllers; import views.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import models.*; public class AdminAccountController extends AbstractController { private AdminAccountView adminAccountView; private Person p; public AdminAccountController(AdminAccountView frame, boolean hasBackButton) { super(frame, hasBackButton); adminAccountView = frame; adminAccountView.setRemoveButtonActionListener(new RemoveButtonActionListener()); adminAccountView.setAddButtonActionListener(new AddButtonActionListener()); p = adminAccountView.getP(); } public class RemoveButtonActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { int index = adminAccountView.getTable().getSelectedRow(); if (index != -1) { String id = (String) adminAccountView.getTable().getModel().getValueAt(index, 0); for (Account a : Bank.getInstance().getInfo().get(p)) { if (a.getId().equals(id)) { try { Bank.getInstance().removeAccount(p, a); } catch (IllegalOperationException e1) { e1.printStackTrace(); } break; } } ((DefaultTableModel) adminAccountView.getTable().getModel()).removeRow(index); } } } public class AddButtonActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Object[] options = {"Savings Account", "Spendings Account"}; int choice = JOptionPane.showOptionDialog(null, "What type of account do you want?", "Choose an option", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[0]); int money = Integer.parseInt(JOptionPane.showInputDialog("What will be your inital balance?")); Account a = null; if(choice == 0){ try { a = new SavingsAccount(money); } catch (NotEnoughFundsException e1) { JOptionPane.showMessageDialog(null, "Not enough funds"); return; } }else{ a = new SpendingsAccount(money); } a.addObserver(Bank.getInstance()); try { Bank.getInstance().addAccount(p, a); } catch (IllegalOperationException e1) { e1.printStackTrace(); return; } ((DefaultTableModel) adminAccountView.getTable().getModel()).addRow(new Object[] { a.getId(), a.getType(), a.getMoney(), a.getExpireDate()}); } } }